#include <iostream>
using std::cout;
using std::endl;

struct Bar{
    void test0(){ cout << "Bar test0()" << endl; }
    void test1(int x){ cout << "Bar test1(int):" << x << endl; }
    void test2(){
        cout << "Bar test2():" << _data << endl;
    }
    int _data = 10;
};

void test0(){
    //只要fp是一个Bar*类型，就能找到Bar类下的成员函数
    //如果不涉及数据成员，利用空指针访问本类的成员函数也没有问题
    //但是利用空指针访问数据成员不行
    Bar * fp = nullptr;
    fp->test0(); //Bar::test0(nullptr);
    fp->test1(100);//Bar::test1(nullptr,100);
    //相当于this->_data，但是此时this是一个空指针，找不到_data
    fp->test2();//Bar::test2(nullptr);
}

int main(void){
    test0();
    return 0;
}
